package org.marketlive.entity.attributes;

/**
 * Represents a list item in an attribute list.
 */

/*
(C) Copyright MarketLive. 2006. All rights reserved.
MarketLive is a trademark of MarketLive, Inc.
Warning: This computer program is protected by copyright law and international treaties.
Unauthorized reproduction or distribution of this program, or any portion of it, may result
in severe civil and criminal penalties, and will be prosecuted to the maximum extent
possible under the law.
*/

public interface IAttributeTypeLIDO {

    /**
     * Returns the value of this list item.
     * @return the value of this list item
     */
    String getItemValue();

    /**
     * Sets the value of this list item.
     * @param itemValue the value of this list item
     */
    void setItemValue(String itemValue);

    /**
     * Returns the ID of this list item. The ID is this item's index in the list that contains it.
     * @return the index of this list item in the list containing it.
     */
    int getItemID();

    /**
     * Sets the ID of this list item. The ID is this item's index in the list that contains it.
     * @param itemID the index of this list item in the list containing it
     */
    void setItemID(int itemID);

    /**
     * Returns the number of times this list item has been used.
     * Once used, this list item can no longer be modified.
     * @return the number of times this item has been used
     */
    int getUseCount();

    /**
     * Sets the usage count for this list item.
     * If usage count is greater than 0, this item can no longer be modified.
     *
     * @param useCount the number of times this list item has been used
     */
    void setUseCount(int useCount);

    /**
     * Returns usage as a string.
     *
     * @return "Yes" if usage count is greater than 0, "No" otherwise
     */
    String getInUseString();
}
